//分路由处理，每一个函数都是一个路由
const fs = require('fs')
const qs = require('querystring')
//处理root对应的路由

//这里的是一个对象，用来存储用户输入的数据
dataObj = {}
function root(res,data){
    fs.createReadStream('./views/root.html','utf-8').pipe(res)
}

//处理home对应的路由
function home(res,data){
    // res.write("home function")
    // res.end()
    // fs.createReadStream('./views/home.html','utf-8').pipe(res)
    // data = "username=tom&password=456"
    console.log(data)
    if(data) dataObj = qs.parse(data)
    rander('./views/home.html',dataObj,res)
}

function about(res,data){
    // res.write("about function")
    // res.end()
    fs.createReadStream('./views/about.html','utf-8').pipe(res)
}

//no_found-404
function nofound(res,data){
    // res.write('404')
    // res.end()
    fs.createReadStream('./views/404.html','utf-8').pipe(res)
}

//home目录下的二级list目录
function home_list(res,data){
    fs.createReadStream('./views/home/list.html','utf-8').pipe(res)
}

//专门用来完成页面动态渲染的函数
function rander(filePath,dataObj,res){
    res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'})
    // 读取当前filepath的指定的文件内容
    fs.readFile(filePath,function(err,data){
        if(err) return err
        //在异步函数中调用同步函数对象
        let str = data.toString()  //str 就是html文件内容
        for(const key in dataObj){
            str = str.replace(`{{${key}}}`,dataObj[key])
        }
        //获取str字符串中还存在{{变量名}}的占位符，把所有占位符换成空
        //因为变量的不确定性，所以导致需要使用正则表达式来完成对应的判断
        str = str.replace(/{{(\w+)}}/g,'')    //这里的g的含义是全局的意思
        //输出
        res.write(str)
        res.end()
    })
}
//暴露这里的每一个函数
module.exports = {
    root,
    home,
    about,
    nofound,
    home_list
}